package com.ruoyi.generateTest.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.generateTest.domain.GeneratedExam;
import com.ruoyi.generateTest.mapper.GenerateTestPaperMapper;
import com.ruoyi.generateTest.domain.GenerateTestPaper;
import com.ruoyi.generateTest.service.IGenerateTestPaperService;

/**
 * 生成试题文件Service业务层处理
 * 
 * @author 经纬线
 * @date 2024-08-04
 */
@Service
public class GenerateTestPaperServiceImpl implements IGenerateTestPaperService 
{
    @Autowired
    private GenerateTestPaperMapper generateTestPaperMapper;

    /**
     * 查询生成试题文件
     * 
     * @param fileId 生成试题文件主键
     * @return 生成试题文件
     */
    @Override
    public GenerateTestPaper selectGenerateTestPaperByFileId(Long fileId)
    {
        return generateTestPaperMapper.selectGenerateTestPaperByFileId(fileId);
    }

    /**
     * 查询生成试题文件列表
     * 
     * @param generateTestPaper 生成试题文件
     * @return 生成试题文件
     */
    @Override
    public List<GenerateTestPaper> selectGenerateTestPaperList(GenerateTestPaper generateTestPaper)
    {
        return generateTestPaperMapper.selectGenerateTestPaperList(generateTestPaper);
    }

    /**
     * 新增生成试题文件
     * 
     * @param generateTestPaper 生成试题文件
     * @return 结果
     */
    @Transactional
    @Override
    public int insertGenerateTestPaper(GenerateTestPaper generateTestPaper)
    {
        int rows = generateTestPaperMapper.insertGenerateTestPaper(generateTestPaper);
        insertGeneratedExam(generateTestPaper);
        return rows;
    }

    /**
     * 修改生成试题文件
     * 
     * @param generateTestPaper 生成试题文件
     * @return 结果
     */
    @Transactional
    @Override
    public int updateGenerateTestPaper(GenerateTestPaper generateTestPaper)
    {
        generateTestPaperMapper.deleteGeneratedExamByFileId(generateTestPaper.getFileId());
        insertGeneratedExam(generateTestPaper);
        return generateTestPaperMapper.updateGenerateTestPaper(generateTestPaper);
    }

    /**
     * 批量删除生成试题文件
     * 
     * @param fileIds 需要删除的生成试题文件主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteGenerateTestPaperByFileIds(Long[] fileIds)
    {
        generateTestPaperMapper.deleteGeneratedExamByFileIds(fileIds);
        return generateTestPaperMapper.deleteGenerateTestPaperByFileIds(fileIds);
    }

    /**
     * 删除生成试题文件信息
     * 
     * @param fileId 生成试题文件主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteGenerateTestPaperByFileId(Long fileId)
    {
        generateTestPaperMapper.deleteGeneratedExamByFileId(fileId);
        return generateTestPaperMapper.deleteGenerateTestPaperByFileId(fileId);
    }

    @Override
    public GenerateTestPaper getFilePathByFileId(Long generateFileId) {
        return generateTestPaperMapper.getFilePathByFileId(generateFileId);
    }

    /**
     * 新增生成试题信息
     * 
     * @param generateTestPaper 生成试题文件对象
     */
    public void insertGeneratedExam(GenerateTestPaper generateTestPaper)
    {
        List<GeneratedExam> generatedExamList = generateTestPaper.getGeneratedExamList();
        Long fileId = generateTestPaper.getFileId();
        if (StringUtils.isNotNull(generatedExamList))
        {
            List<GeneratedExam> list = new ArrayList<GeneratedExam>();
            for (GeneratedExam generatedExam : generatedExamList)
            {
                generatedExam.setFileId(fileId);
                list.add(generatedExam);
            }
            if (list.size() > 0)
            {
                generateTestPaperMapper.batchGeneratedExam(list);
            }
        }
    }
}
